home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / kernel / net / ds5000.md / netLEMachInt.h < prev    next >
C/C++ Source or Header  |  1992-12-18  |  2KB  |  76 lines

  1. /*
  2.  * netLEMachInt.h --
  3.  *
  4.  *    Internal definitions for the ds5000-based LANCE controller.
  5.  *
  6.  * Copyright 1990 Regents of the University of California
  7.  * Permission to use, copy, modify, and distribute this
  8.  * software and its documentation for any purpose and without
  9.  * fee is hereby granted, provided that the above copyright
  10.  * notice appear in all copies.  The University of California
  11.  * makes no representations about the suitability of this
  12.  * software for any purpose.  It is provided "as is" without
  13.  * express or implied warranty.
  14.  *
  15.  * $Header: /cdrom/src/kernel/Cvsroot/kernel/net/ds5000.md/netLEMachInt.h,v 1.4 92/06/03 22:48:33 voelker Exp $ SPRITE (Berkeley)
  16.  */
  17.  
  18. #ifndef _NETLEMACHINT
  19. #define _NETLEMACHINT
  20.  
  21. #include <netInt.h>
  22. #include <machAddrs.h>
  23.  
  24. /*
  25.  * Register address port and register data port definition.
  26.  */
  27.  
  28. typedef struct NetLEMach_Reg {
  29.     volatile unsigned short    dataPort;    /* RDP */
  30.     unsigned short unused;
  31.         volatile unsigned short    addrPort[1];    /* RAP */
  32. } NetLEMach_Reg;
  33.  
  34. #define NET_LE_REG_SIZE    6
  35.  
  36. /*
  37.  * Defined constants:
  38.  */
  39.  
  40. /*
  41.  * We have to copy the packets into the network buffer.
  42.  */
  43.  
  44. #define NET_LE_COPY_PACKET        TRUE
  45.  
  46. /*
  47.  * Misc addresses (offsets from slot address).
  48.  */
  49.  
  50. #define NET_LE_MACH_BUFFER_OFFSET    0x0
  51. #define NET_LE_MACH_BUFFER_SIZE        0x20000
  52. #define NET_LE_MACH_RDP_OFFSET        0x100000
  53. #define NET_LE_MACH_RAP_OFFSET        0x100004
  54. #define NET_LE_MACH_DIAG_ROM_OFFSET    0x1c0000
  55. #define NET_LE_MACH_ESAR_OFFSET        0x1c0000
  56.  
  57. /*
  58.  * Macros for converting chip to cpu and cpu to chip address.
  59.  * We always deal with chip addresses in two parts, the lower 16 bits
  60.  * and the upper 8 bits.
  61.  */
  62. #define    NET_LE_FROM_CHIP_ADDR(statePtr, high,low)    \
  63.         ((Address) (statePtr->bufAddr + ((int) (high) << 16) + (low)))
  64. #define    NET_LE_TO_CHIP_ADDR_LOW(a) ( ((unsigned int) (a)) & 0xffff)
  65.  
  66. #define    NET_LE_TO_CHIP_ADDR_HIGH(a) ( (((unsigned int) (a)) >> 16) & 0x1)
  67.  
  68. /*
  69.  * Macro to allocate a network buffer.  For the ds5000 we call the 
  70.  * routine to allocate memory in the region accessible by the chip.
  71.  */
  72. #define BufAlloc(statePtr, numBytes) \
  73.     NetLEMemAlloc((statePtr), (numBytes))
  74.  
  75. #endif /* _NETLEMACHINT */
  76.